// 创建路由
const router = require('express').Router()
// 引入 md5
const md5 = require('md5')

// 引入密钥
const { md5_key } = require('../config')
// 引入jwt
const jwt = require('../jwt')

// 引入数据库
const db = require('../db')

// 配置登录的路由
router.post('/access_tokens', (req, res) => {
    /******* 1. 接收电话号码和密码 */
    const mobile = req.body.mobile
    const password = req.body.password

    // 正则
    let mobRef = /^1([38][0-9]|4[579]|5[0-3,5-9]|6[6]|7[0135678]|9[89])\d{8}$/
    let passRef = /^[\w_-]{6,16}$/

    // 判断是否提交了用户名
    if (mobile) {
        if (!mobRef.test(mobile)) {
            res.json({
                "ok": 0,
                "error": "手机号码格式不正确"
            })
            // 退出程序
            return
        }
    }

    // 如果传了密码
    if (password) {
        if (!passRef.test(password)) {
            res.json({
                "ok": 0,
                "error": "密码必须是6-16位的字母、数字、_-组成！"
            })
            // 退出程序
            return
        }
    }

    /********* 使用手机号到数据库查询有账号 */
    let sql = 'SELECT * FROM user WHERE mobile=?'
    db.query(sql, mobile, (err, results) => {

        // 如果账号存在
        if (results[0]) {
            // 判断密码（把用户的密码加密并和数据库中对比）
            if (md5(password + md5_key) == results[0].password) {
                // 返回
                res.json({
                    "ok": 1,
                    "message": "登录成功",
                    "data": results[0],
                    "token": jwt.makeJWT({
                        id: results[0].id
                    })
                })

            } else {
                res.json({
                    "ok": 0,
                    "error": "密码错误！"
                })
            }
        } else {
            res.json({
                "ok": 0,
                "error": "用户名不存在！"
            })
        }

    })
})

// 导出路由
module.exports = router
